
package com.jf.cloud.product.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.product.bo.mongo.MongoSpuBrowseLogBO;
import com.jf.cloud.product.dto.SpuBrowseLogDTO;
import com.jf.cloud.product.model.SpuBrowseLog;
import com.jf.cloud.product.vo.SpuBrowseLogVO;

import java.util.List;

/**
 * 商品浏览记录表
 *
 * @author zz
 * @date 2021-03-19 14:28:14
 */
public interface SpuBrowseLogService {

    /**
     * 分页获取商品浏览记录表列表
     * @param pageDTO 分页参数
     * @return 商品浏览记录表列表分页数据
     */
    PageVO<SpuBrowseLogVO> page(PageDTO pageDTO);

    /**
     * 保存商品浏览记录表
     * @param spuBrowseLog 商品浏览记录表
     */
    void save(MongoSpuBrowseLogBO spuBrowseLog);

    /**
     * 更新商品浏览记录表
     * @param spuBrowseLog 商品浏览记录表
     */
    void updateStatus(MongoSpuBrowseLogBO spuBrowseLog);

    /**
     * 单间、批量删除商品浏览记录
     * @param spuBrowseLogDTO
     */
    void delete(SpuBrowseLogDTO spuBrowseLogDTO);

    /**
     * 获取用户浏览的分类
     * @param spuType
     * @return
     */
    Long recommendCategoryId(Integer spuType);

    /**
     * 获取用户该商品当天的浏览记录
     * @param spuBrowseLogDTO
     * @return
     */
    SpuBrowseLog getCurrentLogBySpuIdAndUserId(SpuBrowseLogDTO spuBrowseLogDTO);

    /**
     * 获取用户最近的三条浏览记录
     * @param userId 用户id
     * @param shopId
     * @return 返回最近的三条记录
     */
    List<Long> recentBrowse(Long userId, Long shopId);
}
